package com.fengkai.filepost.pdfoutstream.test.ODsolutions;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author Fengkai
 * @creat 2023/4/12
 * 字符串组成。
 * <主版本>.<次版本>.<增量版本>：基于数字比较
 * 里程碑版本：基于字符串比较，采用字典序
 * 比较版本号时，按从左到右的顺序依次比较。
 * 基于数字比较， 只需比较忽略任何前导零后的整数值 。
 * 输入2个版本号，输出最大版本号。
 * 输入描述：
 * 输入两个版本号，按行分割，每个版本号的长度小于50
 * 输出描述：
 * 输出较大的版本号
 */
public class FindMaxVersionNum {
    public static void main (String[] args) {
        System.out.println(getMaxVersion("1.5.0-a2", "1.5.0-a2"));

    }

    public static String getMaxVersion (String v1, String v2) {
        String[] version1 = subvVersion(v1);
        String[] version2 = subvVersion(v2);
        for (int i = 0; i < 4; i++) {
            if (version1[i] != null && version2[i] != null && i != 3) {
                if (Integer.parseInt(version1[i]) > Integer.parseInt(version2[i])) {
                    return v1;
                } else if (Integer.parseInt(version1[i]) < Integer.parseInt(version2[i])) {
                    return v2;
                }
            } else if (version1[i] == null || version2[i] == null && i != 3) {
                return version1[i] == null ? v2 : v1;
            }
            if (i == 3) {
                if (version1[i] == null || version2[i] == null) {
                    return version1[i] == null ? v2 : v1;
                }
                int index = 0;
                while (index < version1[i].length() && index < version2[i].length()) {
                    if (version1[i].charAt(index) > version2[i].charAt(index)) {
                        return v1;
                    } else if (version1[i].charAt(index) < version2[i].charAt(index)) {
                        return v2;
                    }
                    index++;
                }
                if (version1.length == version2.length) {
                    return v1;
                } else {
                    return version1.length > version2.length ? v1 : v2;
                }
            }
        }
        return v1;
    }

    private static String[] subvVersion (String v) {
        String[] strings = new String[4];
        String[] split = v.split("\\.");
        for (int i = 0; i < split.length; i++) {
            if (!split[i].contains("-")) {
                strings[i] = split[i];
            } else {
                String[] split1 = split[i].split("-");
                strings[i] = split1[0];
                String s = "";
                for (int j = 1; j < split1.length; j++) {
                    s += split1[j] + "-";
                }
                strings[i + 1] = s.substring(0, s.length() - 1);
            }
        }
        return strings;
    }
}
